Executing Verified Compiler Specification
نویسندگان
چکیده
Much work has been done in verifying a compiler specification, both in hand-written and mechanical proofs. However, there is still a gap between a correct compiler specification and a correct compiler implementation. To fill this gap and obtain a correct compiler implementation, we take the approach of generating a compiler from its specification. We verified the correctness of a compiler specification with the theorem prover Isabelle/HOL, and generated a Standard ML code corresponding to the specification with Isabelle’s code generation facility. The generated compiler can be executed with some hand-written codes, and it compiles a small functional programming language into the Java virtual machine with several program transformations.
منابع مشابه
Chapter 4.2—Languages and Security: Safer Software Through Language and Compiler Techniques
Embedded systems, such as those found in mobile phones or satellites, have grown in popularity in the recent years. Code that executes in these environments need to be verified as safe, so they do not expose sensitive data or hidden APIs to the outside world. With enough knowledge of the code and then environment in which it executes, malicious entities can find and exploit vulnerabilities for ...
متن کاملN Queens on an FPGA : Mathematics , Programming , or Both ?
This paper presents a design methodology for deriving an FPGA implementation directly from a mathematical specification, thus avoiding the switch in semantic perspective as is present in widely applied methods which include an imperative implementation as an intermediate step. The first step in the method presented in this paper is to transform a mathematical specification into a Haskell progra...
متن کاملAn Imperative Extension to Alloy and a Compiler for its Execution
This thesis presents an extension of the Alloy specification language with the standard imperative programming constructs, allowing for the natural specification of dynamic systems. Using this extension, programmers can express stateful behavior directly, mixing declarative and imperative styles as desired. A relational semantics for the new imperative constructs will ensure that specifications...
متن کاملEfficient, Verifiable Binary Sandboxing for a CISC Architecture
Executing untrusted code while preserving security requires enforcement of memory and control-flow safety policies: untrusted code must be prevented from modifying memory or executing code except as explicitly allowed. Software-based fault isolation (SFI) or “sandboxing” enforces those policies by rewriting the untrusted code at the level of individual instructions. However, the original sandbo...
متن کاملPervasive Compiler Verification - From Verified Programs to Verified Systems
We report in this paper on the formal verification of a simple compiler for the C-like programming language C0. The compiler correctness proof meets the special requirements of pervasive system verification and allows to transfer correctness properties from the C0 layer to the assembler and hardware layers. The compiler verification is split into two parts: the correctness of the compiling spec...
متن کامل